//
//  JHFHttp.h
//  jhf
//
//  Created by 计海峰 on 2017/11/23 14:05:37.
//  Copyright © 2017年 计海峰. All rights reserved.
//

#import "NSDictionary+Merge.h"

#import "CrosheResult.h"

#import "JBaseHttp.h"

@interface JHttp : NSObject

#pragma mark 更换ip
//更换ip
void jhf_updateFirstUrl(NSString *baseUrl);

//更换ip
void jhf_updateSecondUrl(NSString *baseUrl);

#pragma mark 返回基本路径
NSString *jhf_baseUrl();

#pragma mark 返回资源路径
NSString *jhf_secondBaseUrl();

#pragma mark 获取图片路径
/**
 *  获取图片路径
 *
 *  @param imageUrl 图片的后半个路径
 *
 *  @return 图片的NSURL结果
 */
NSURL *jhf_imageUrl(NSString * imageUrl);

#pragma mark 取消某个view的MJ上拉和下拉
/**
 *  取消MJ上上拉和下拉
 *
 *  @param view 传入的所需要操作的view
 */
void cancelMJRefreshAction(UIView *view);

void dealFail(NSError *error);

#pragma mark  基本方法
/**
 *  post网络请求
 *
 *  @param urlStr  地址
 *  @param param   参数
 *  @param success 成功返回信息
 *  @param fail    失败返回信息
 */
void jhf_post(NSString *urlStr, id param,Success success , Fail fail);


/**
 *  get网络请求
 *
 *  @param urlStr  全地址
 *  @param param  参数
 *  @param success  成功返回信息
 *  @param fail  失败返回信息
 */
+ (void)jhf_getUrl:(NSString *)urlStr p:(id)param s:(Success )success f:(Fail )fail;


#pragma mark simple postViewBack
/**
 *  简单的反射请求
 *
 *  @param urlStr 路径请求
 *  @param param  请求参数
 *  @param obj    反射的对象
 *  @param view   需要操作的view
 */
void jhf_postSimpleBack(NSString *urlStr, id param,id obj,UIView * view);

#pragma mark postview方法
/**
 *  postview方法
 *
 *  @param urlStr         请求路径
 *  @param param          请求参数
 *  @param message        请求是所需要的等待显示提示
 *  @param method         回调本类的方法
 *  @param obj 回调的类
 *  @param view           可能需要处理的view 例如取消上拉或者下拉
 */
void jhf_postViewBack(NSString *urlStr, id param,NSString *message,NSString *method ,id obj,UIView * view );

#pragma mark postViewBack

/**
 *  postViewBack方法
 *
 *  @param urlStr         请求路径
 *  @param param          请求参数
 *  @param message        请求是所需要的等待显示提示
 *  @param obj 回调的类
 *  @param view           可能需要处理的view 例如取消上拉或者下拉
 */
void jhf_postBack(NSString *urlStr, id param,NSString *message,id obj,UIView * view);

#pragma mark  缓存请求
/**
 *  post带缓存的请求
 *
 *  @param urlStr  地址
 *  @param param   参数
 *  @param success 成功返回信息
 *  @param fail    失败返回信息
 */
void jhf_postWithCache(NSString *urlStr , id param ,Success success , Fail fail);

/**
 *  post带缓存的请求
 *
 *  @param urlStr  地址
 *  @param param   参数
 *  @param refresh 是否刷新
 *  @param success 成功返回信息
 *  @param fail    失败返回信息
 */
void jhf_postWithRefreshCache(NSString *urlStr ,id param ,BOOL refresh ,Success success ,Fail fail);

/**
 *  post view back
 *
 *  @param urlStr         请求路径
 *  @param param          请求参数
 *  @param message        请求是所需要的等待显示提示
 *  @param method         回调本类的方法
 *  @param obj 回调的类
 */
void jhf_postCacheBack(NSString *urlStr ,id param , NSString *message , NSString *method , id obj,UIView * view);



#pragma mark  上传下载
/**
 文件下载
 
 @param urlStr 下载的路径
 @param needSign 是否加密
 @param localPath 全路径
 @param param 参数
 @param success 成功返回信息 未格式化
 @param fail 失败返回信息
 @param progress 进度显示
 */
void jhf_down(NSString *urlStr, BOOL needSign, NSString *localPath, id param,Success success , Fail fail ,Progress progress);

#pragma mark  图片上传  表单提交
void jhf_uploadUrl(NSString *urlStr ,id param ,NSMutableArray<UIImage *> *imageArray,NSMutableArray<NSString *> *nameArray , NSString *message , NSString *method ,  id obj);
 
#pragma mark  视频或者语音上传  表单提交
void jhf_uploadFile(NSString *urlStr ,id param ,NSMutableArray<NSObject *> *fileArray,NSMutableArray<NSString *> *nameArray , NSString *message , NSString *method , id obj);

@end




